package cn.psvmc.cxzapi.service.order;

import cn.psvmc.cxzapi.config.mybatisplus.service.impl.AbstractService;
import cn.psvmc.cxzapi.exception.ServiceException;
import cn.psvmc.cxzapi.mapper.order.TOverdueTypeMapper;
import cn.psvmc.cxzapi.model.common.SearchEntity;
import cn.psvmc.cxzapi.model.order.TOverdueType;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 逾期类型表 服务实现类
 *
 * @Author auto
 * @Date 2025-01-19
 */
@Service
public class TOverdueTypeService extends AbstractService<TOverdueTypeMapper, TOverdueType> {

    @Resource
    private TOverdueTypeMapper tOverdueTypeMapper;

    /**
     * @Date auto 2025-01-19 新增逾期类型表
     * @Param tOverdueType 逾期类型表
     * @Return int
     */
    public int add(TOverdueType tOverdueType) {
        return tOverdueTypeMapper.insert(tOverdueType);
    }

    /**
     * @Date auto 2025-01-19 更新逾期类型表
     * @Param tOverdueType 逾期类型表模型
     * @Return int
     */
    public int edit(TOverdueType tOverdueType) {
        // 通过id查询数据处理 详情
        TOverdueType originTOverdueType = this.detail(tOverdueType.getOtid());
        if (originTOverdueType == null) {
            throw new ServiceException("未查询到对应的逾期类型表信息！");
        }

        // 字段为null 不更新
        return tOverdueTypeMapper.updateById(tOverdueType);
    }

    /**
     * @Date auto 2025-01-19 查询逾期类型表详情
     * @Param id 唯一id
     * @Return cn.psvmc.cxzapi.model.order.TOverdueType
     */
    public TOverdueType detail(Integer id) {
        return tOverdueTypeMapper.selectById(id);
    }

    /**
     * @Date auto 2025-01-19 删除逾期类型表
     * @Param id 唯一id
     * @Return void
     */
    public void delete(Integer id) {
        tOverdueTypeMapper.deleteById(id);
    }

    /**
     * @Description 管理列表
     * @Date 2025/1/19 21:52
     * @Author YWX
     * @Param [iPage]
     * @Return com.baomidou.mybatisplus.core.metadata.IPage<java.util.Map>
     **/
    public IPage<Map> list(Page<TOverdueType> iPage, SearchEntity entity) {
        return tOverdueTypeMapper.listAll(iPage, entity);
    }

    /**
     * @Description 选择列表
     * @Date 2025/1/19 22:52
     * @Author YWX
     * @Param []
     * @Return java.util.List<java.util.Map>
     **/
    public List<Map> listForSel() {
        return tOverdueTypeMapper.listForSel();
    }
}
